package cn.stylefeng.guns.sys.modular.system.service;

import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.sys.modular.system.entity.GcgMsg;
import cn.stylefeng.guns.sys.modular.system.entity.Project;
import cn.stylefeng.guns.sys.modular.system.entity.TaskStatus;
import cn.stylefeng.guns.sys.modular.system.model.params.BtyGufenzhuanrangParam;
import cn.stylefeng.roses.core.reqres.response.ResponseData;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;

import javax.servlet.ServletException;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
import java.util.Map;

public interface GcWxService extends IService<GcgMsg> {

    /**
     * 本店未完成任务列表
     *
     * @param proId
     * @return
     */
    Map noFinish(int proId, Long userId);

    /**
     * 本店已完成任务列表
     *
     * @param proId
     * @return
     */
    List finish(int proId);

    /**
     * 全部店已完成任务列表
     *
     * @param wxOpenId
     * @return
     */
    ResponseData finishShop(String wxOpenId, Long userId, String proName);

    /**
     * 全部店未完成任务列表
     *
     * @param wxOpenId
     * @return
     */
    List noFinishShop(String wxOpenId, Long userId, String proName);

    /**
     * 新增任务信息
     *
     * @param taskStatus
     */
    int addRent(List<TaskStatus> taskStatus) throws ParseException;

    /**
     * 查看当前任务信息
     *
     * @param proId
     * @param taskId
     */
    List<TaskStatus> taskList(int proId, int taskId, String wxOpenId, Long userId);

    /**
     * 收银系统建档
     *
     * @param taskStatus
     * @return
     */
    ResponseData archives(List<TaskStatus> taskStatus);

    /**
     * 新增任务信息(工程)
     *
     * @param taskStatus
     */
    int addPro(List<TaskStatus> taskStatus) throws ParseException;

    /**
     * 全部店已完成任务列表(工程)
     *
     * @param userId
     * @return
     */
    List<Map> GCFinish(Long userId, String proName);

    /**
     * 全部店未完成任务列表（工程）
     *
     * @param userId
     * @return
     */
    List GCNoFinish(Long userId, String proName);

    /**
     * 本店未完成任务列表（工程）
     *
     * @param proId
     * @param userId
     * @return
     */
    Map noFinishGc(int proId, Long userId);

    /**
     * 本店已完成任务列表（工程）
     *
     * @param proId
     * @return
     */
    List finishGc(int proId, Integer taskId, Long userId);

    /**
     * 查看当前任务信息(工程)
     *
     * @param proId
     * @param taskId
     * @param userId
     * @return
     */
    Map GCList(int proId, int taskId, Long userId);

    /**
     * 已指定营运经理店铺
     *
     * @return
     */
    List yYList(String proName);

    /**
     * 未指定营运经理店铺
     *
     * @return
     */
    List yYNoList(String proName);

    /**
     * 已指定督导店铺
     *
     * @param proName
     * @return
     */
    List dDList(String proName, Long userId);

    /**
     * 未指定督导店铺
     *
     * @param proName
     * @return
     */
    List dDNoList(String proName, Long userId);

    /**
     * 本店营运经理
     *
     * @param proId
     * @return
     */
    List yyShop(Integer proId);

    /**
     * 本店督导
     * @param proId
     * @return
     */
    List ddShop(Integer proId);

    /**
     * 判断本店任务进度状态
     * @param proId
     * @return
     */
    Map dmStatus(Integer proId);

    /**
     * 判断当前任务登录人角色
     * @param proId
     * @return
     */
    Map roleStatus(Integer proId, Long userId);

    /**
     * 修改现场踏勘推迟日期
     */
    ResponseData editXctk(Integer proId, String xctk);

    /**
     * 查询现场踏勘推迟日期
     * @param proId
     * @return
     */
    Map getXctk(Integer proId);

    /**
     * 确认到货状态
     * @param proId
     * @return
     */
    Map getDh(Integer proId);

    /**
     * 绑定用户
     * @param name
     * @param phone
     * @return
     */
    Map bindUsers(String name, String phone, String openid, Long deptId) throws ServletException, IOException;

    /**
     * 本店任务列表
     * @param proId
     * @return
     */
    ResponseData proIdList(Integer proId);

    /**
     * 审批记录
     * @param account
     * @return
     */
    ResponseData approveList(String account);

}
